iT邦幫忙

2023 iThome 鐵人賽

DAY 21
0
Kotlin

new to Kotlin系列 第 21

Day 21 委任

  • 分享至 

  • xImage
  •  

委任模式已被證明為繼承實作的良好替代方案
如下Derived這個類別可以透過委任特定物件的方式去實作介面Base

interface Base {
    fun print()
}

class BaseImpl(val x: Int) : Base {
    override fun print() { print(x) }
}

class Derived(b: Base) : Base by b

fun main() {
    val b = BaseImpl(10)
    Derived(b).print()
}
  • 覆寫介面成員
    如下這個範例想覆寫函式printMessage() { print("abc") }到Derived
    當我們去呼叫printMessage時,則會列印abc而不是10
interface Base {
    fun printMessage()
    fun printMessageLine()
}

class BaseImpl(val x: Int) : Base {
    override fun printMessage() { print(x) }
    override fun printMessageLine() { println(x) }
}

class Derived(b: Base) : Base by b {
    override fun printMessage() { print("abc") }
}

fun main() {
    val b = BaseImpl(10)
    Derived(b).printMessage()
    Derived(b).printMessageLine()
}

上一篇
Day 20 列舉類別以及內嵌值類別
下一篇
Day 22 委任的性質
系列文
new to Kotlin30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言